\section{Desarrollo}
\subsection{Modelo planteado}

A continuaci\'on comentaremos el modelo en el cual nos basamos para llegar a una soluci\'on.
En ``La Guerra Lineal, Episodio 4'' El objetivo es eliminar la nave enemiga, antes que esta nos elimine a nosotros. Para lograr esto tanto nuestra nave como la del enemigo deben encontrar la posici\'on de la otra nave para poder efectuar un disparo a esa posici\'on y destruirla. Cada nave se situa en un punto del hiperespacio de n dimenciones que lo representaremos un vector en $\Re^n$. Las naves para efectuar el disparo lo deben hacer mediante una \textit{transformaci\'on warp} que es una matriz inversible en $\Re^{nxn}$ la posici\'on en la que el disparo explota es la multiplicaci\'on entre la matriz de la transformaci\'on y la posici\'on de la nave que efectua el disparo.\\
Teniendo cada nave una posici\'on, al efectuar el primer disparo no hay informaci\'on sobre que lugar es conveniente disparar. Una vez que se realiza el primer disparo, cada nave obtiene la informaci\'on del punto del hiperespacio donde explot\'a el disparo y la matriz de la \textit{transformaci\'on warp} con la que disparo el enemigo. Entonces con estos datos el que recibi\'o el disparo puede calcular la posici\'on del enemigo resolviendo el sistema $Ax=d$ donde $A$ es la matriz de la transformaci\'on $d$ es la ubicaci\'on de la exploci\'on del disparo y $x$ la incognita que representa la ubicaci\'on del enemigo.\\
Para que al enemigo se le dificulte encontrar la nuestra posici\'on a la matriz de la \textit{transformaci\'on warp} se le agrega ruido, asi cuando el enemigo intente resolver el sistema con los errores que acarrea la operaci\'on no obtendra nuestra posici\'on exacta.\\
El ruido que decidimos introducir en nuestra trasnformaci\'on es mandar un matriz que tenga las mismas condiciones, en cuanto a su n\'umero de condici\'on, que la matriz de Hilbert. Para lograr esto lo que hacemos es, primero calculamos la supuesta posici\'on de nuestro enemigo, con esto ya podemos fabricarno una matriz diagonal que multiplicado por nuestra posici\'on de como resultado la posici\'on enemiga. El pr\'oximo paso es juntar esta matriz diagonal con la matriz de Hilbert, este paso se encuentra detallado en la secci\'on de pseudo-codigo. Una vez realizado estos pasos ya estamos en condiciones de realizar el disparo y esperar un nuevo turno.

\subsection{Implementaci\'on}
Para llevar a cabo el modelo implementamos las siguientes clases que contribuyan a la soluci\'on:
\begin{itemize}
	\item[-] \textbf{Matriz}\\
		Tiene como estructura interna un vector, es decir, la matriz es como si la filas fueran continuas. Esta clase matriz provee de operaci\'ones como son obtener y setear un elemento en una posici\'on $M_{ij}$, obtener la posici\'on del m\'aximo elemento de la alguna de sus submatrices, y metodos que  intercambian filas o columnas.
	\item[-] \textbf{Localizador}\\
		El Localizador es el encargado de buscar la posici\'on en la cual se encuentra el enemigo. Para eso tiene un m\'etdo getPosicionObjetivo que se le pasan dos objetos del tipo Matriz, uno representa que representa la posici\'on en el hiperespacio donde explot� el disparo y el otro es la matriz de \textit{transformaci\'on warp} con la que se efectu� el disparo. En la eliminaci\'on gaussiana se utiliza la t\'ecnica del pivoteo total para reducir los errores de redondeo.
	\item[-] \textbf{Espionaje}\\
		 Espionaje es la clase encargada del manejo de los archivos, es decir, pasa las matrices del formato archivo a nuestra estructura de datos. Tambien es la encargada de guardar los datos en un archivo y generar archivos adicionales donde se pueda guardar informaci\'on de disparos anteriores. 
	\item[-] \textbf{Disparar}\\
	La clase Disparar es la encargada de generar la matriz de la \textit{transformaci\'on warp} para efectuar el disparo. Para ello existe el m\'etodo \textit{getTransformacion} que recibe un objeto matriz que representa la supuesta ubicaci\'on del enemigo. Para agregarle ruido a la transformaci\'on se lo multiplica por la matriz de Hilbert.
\end{itemize}

\subsection{Pseudo-codigo}

Del m\'etodo getPosicionObjetivo de la clase Localizador.\\
\begin{ttfamily}
\textbf{getPosicionObjetivo}(Matriz posDisparo,Matriz transWarp)\\
\indent Para k= 1,...,n-1\\
\indent\indent Intercambiar la fila k y la columna k con la fila y columna del m\'aximo elemento de la submatriz k de la matriz transWarp.\\
\indent\indent Eliminaci\'on gaussiana en el paso k.\\
\indent Fin Para\\
\indent Devolver soluci\'on.\\
\end{ttfamily}

Del m\'etodo getTransformacion de la clase Disparar, con el cual generamos la transformaci\'on warp que recibe nuestro enemigo.\\
\begin{ttfamily}
\textbf{getTransformacion}(posEnemigo)\\
\indent posAux $\leftarrow$ Hilbert * posEnemigo\\
\indent D $\leftarrow$ MatrizNula\\
\indent Para i= 1,...,n\\
\indent\indent si $posEnemigo_{i}$ $\leq$ $e^{-6}$ or $posAux_{i}$ $\leq$ $e^{-6}$\\
\indent\indent\indent $D_{ii}$ $\leftarrow$ 0.000001\\
\indent\indent sino\\
\indent\indent\indent $D_{ii}$ $\leftarrow$ $posEnemigo_{i}$ / $posAux_{i}$ \\
\indent Fin Para\\
\indent Devolver D * Hilbert\\
\end{ttfamily}
\newpage
